package com.eportal.service;
import com.alibaba.fastjson.JSONObject;
import com.eportal.action.background.FuncMainAction;
import com.eportal.domain.FuncMain;
import com.eportal.domain.Sysopt;
import com.eportal.entity.FuncMainEntity;
import com.eportal.exception.NotUniqueException;
import com.eportal.vo.controller.background.funcmain.FuncMain4AgentListVO;
import com.eportal.vo.controller.background.funcmain.ViewDetailVO;
import com.framework.jqgrid.JqGridPager;
import com.framework.jqgrid.PageEntity;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;


public interface FuncMainService extends BaseService<FuncMainEntity> {

	List<FuncMain> list(JqGridPager jqGridPager);

	List<Map<String,Object>> list4agent(JqGridPager jqGridPager,String agtcode);

	FuncMain get(Long sid);

	void apply(String[] communityArr, String[] alipayArr, String sid, String agtCode,Long sysoptid) throws Exception;


	/**
	 * 应用开通的详情
	 * @param funcAgentId
	 * @return
	 * @throws NotUniqueException
	 */
	List<Map<String, Object>> listDetailByAdmin(String funcAgentId) throws NotUniqueException;

	/**
	 *
	 * @param funcMainId
	 * @param agtCode
	 * @return
	 * @throws NotUniqueException
	 * @see FuncMainService#listDetail(Long, String, Sysopt, int) mybatis版
	 */
	List<Map<String, Object>> listDetail(String funcMainId, String agtCode) throws NotUniqueException;


//todo-----------------------------------------------------------------------------------------------

	/**
	 * 缴费开通申请列表
	 * @author Saber
	 * @Date 2017/8/24 上午11:43
	 * @param pageEntity	分页对象
	 * @param agtCode 		合作方code
	 * @param user			当前用户
	 * @param userRole		当前用户userRole
	 * @see FuncMainService#list4agent(JqGridPager, String)
	 * @return
	 */
	PageInfo<FuncMain4AgentListVO> queryForAgentPage(PageEntity pageEntity,String agtCode, Sysopt user, int userRole);

	/**
	 * 缴费开通申请详情
	 * @param funcMainId	FUNC_MAIN表sId
	 * @param agtCode 		合作方code
	 * @param user			当前用户
	 * @param userRole		当前用户userRole
	 * @see FuncMainService#listDetail(String, String)
	 * @return
	 */
	List<ViewDetailVO> listDetail(Long funcMainId,String agtCode, Sysopt user, int userRole);

	/**
	 * 缴费开通申请详情2（申请时使用）
	 * @author Saber
	 * @Date 2017/8/24 下午4:18
	 * @param sId			FUNC_MAIN表sId
	 * @param user			当前用户
	 * @param userRole		当前用户userRole
	 * @see FuncMainAction#applyView()
	 * @return
	 */
	JSONObject applyDetail(Long sId, Sysopt user, int userRole);

	/**
	 * 缴费开通申请
	 * @author Saber
	 * @Date 2017/8/25 上午9:35
	 * @param sId				sId
	 * @param communityIds		小区id集合 用,分割
	 * @param alipayIds			支付宝账号id集合 用,分割  （FEE_ALIPAY_AUTH表sId）
	 * @param agtCode			合作方code
	 * @param sysoptId			当前用户id
	 * @see FuncMainService#apply(String[], String[], String, String, Long)
	 * @return
	 */
	JSONObject apply(Long sId, String communityIds, String alipayIds, String agtCode,Long sysoptId);


}
